home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 6 / CU Amiga Magazine's Super CD-ROM 06 (1996)(EMAP Images)(GB)(Track 1 of 4)[!][issue 1997-01].iso / devs / postscript_init.ps < prev    next >
Text File  |  1994-07-06  |  7KB  |  268 lines

  1. %!PS
  2. %% $VER: postscript_init.ps 39.1 (31.12.92)
  3. %%BeginProlog
  4.  
  5. /AmigaDict 70 dict def AmigaDict begin
  6.  
  7. %---------
  8. % Device Specific routines
  9. %---------
  10.  
  11. % Paper Trays
  12. /letter {} def
  13. /legal  {} def
  14. /a4 {} def
  15. /custom {} def
  16.  
  17. % Manual Paper Feed
  18. /manual {} def
  19.  
  20. % Graphic Screen Types
  21. /line_scr  { {pop} setscreen } def
  22. /dot_scr   { 20 currentscreen 4 -2 roll pop 3 1 roll setscreen } bind def
  23. /vert_scr  { 40  0 line_scr } def
  24. /horiz_scr { 40 90 line_scr } def
  25. /diag_scr  { 40 45 line_scr } def
  26.  
  27. %---------
  28. % General functions
  29. %---------
  30.  
  31. % underline show string
  32. /U
  33. {
  34.     gsave 0 -3 rmoveto
  35.     dup stringwidth pop
  36.     dup 0 rlineto neg 0 rlineto stroke
  37.     grestore
  38. } bind def
  39.  
  40. % Backspace a string
  41. /BS { stringwidth pop neg 0 rmoveto } bind def
  42.  
  43. % Shadow show string
  44. /SS
  45. {
  46.     dup
  47.     gsave false charpath .5 setlinewidth stroke grestore
  48.     stringwidth pop 0 rmoveto
  49. } bind def
  50.  
  51. % Show
  52. /S {show} bind def
  53.  
  54. % Move
  55. /M {moveto} bind def
  56.  
  57. /YM {currentpoint pop exch moveto} bind def
  58.  
  59. %% Define the ReEncoding Procudure
  60. /reencodedict 5 dict def
  61. /ReEncode
  62. {
  63.     reencodedict begin
  64.     /newencoding exch def
  65.     /newfontname exch def
  66.     /basefontname exch def
  67.  
  68.     /basefontdict basefontname findfont def
  69.  
  70.     /newfont basefontdict maxlength dict def
  71.  
  72.     basefontdict
  73.     { exch dup dup /FID ne exch /Encoding ne and
  74.         { exch newfont 3 1 roll put }
  75.         { pop pop }
  76.         ifelse
  77.     } forall
  78.     newfont /FontName newfontname put
  79.     newfont /Encoding newencoding put
  80.     newfontname newfont definefont pop
  81.     end
  82. } def
  83.  
  84. %% Define the ISO encoding Vector
  85. /ISO
  86. [
  87.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  88.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  89.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  90.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  91.  /space /exclam /quotedbl /numbersign /dollar /percent /ampersand
  92.  /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period
  93.  /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon
  94.  /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H
  95.  /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft
  96.  /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
  97.  /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z
  98.  /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
  99.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  100.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /dotlessi /grave
  101.  /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef
  102.  /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /space /exclamdown
  103.  /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
  104.  /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
  105.  /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph
  106.  /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright
  107.  /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute
  108.  /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute
  109.  /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth
  110.  /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
  111.  /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn
  112.  /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae
  113.  /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute
  114.  /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex
  115.  /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex
  116.  /udieresis /yacute /thorn /ydieresis
  117. ] def
  118.  
  119. /FC {ISO ReEncode findfont exch dup 0.8 mul exch matrix scale makefont} bind def
  120.  
  121. /FE {ISO ReEncode findfont exch dup 1.2 mul exch matrix scale makefont} bind def
  122.  
  123. /FN {ISO ReEncode findfont exch scalefont} bind def
  124.  
  125. /L 0 def
  126. /T {dup dup currentpoint pop L sub dup dup cvi sub 3 1 roll cvi exch mod add
  127. sub 0 rmoveto} bind def
  128.  
  129.  
  130. %---------------
  131. % Routines used for doing bitmap graphics
  132. %---------------
  133. /ST 512 string def
  134. /s1 1 string def
  135. /gsh {currentfile s1 readhexstring pop 0 get} bind def
  136.  
  137. /longrun
  138. {
  139.     % Get the character to repeat
  140.     gsh
  141.  
  142.     dup ST exch 0 exch put
  143.     dup ST exch 1 exch put
  144.     dup ST exch 2 exch put
  145.     dup ST exch 3 exch put pop ST
  146.     dup dup   4 exch 0   4 getinterval putinterval
  147.     dup dup   8 exch 0   8 getinterval putinterval
  148.     dup dup  16 exch 0  16 getinterval putinterval
  149.     dup dup  32 exch 0  32 getinterval putinterval
  150.     dup dup  64 exch 0  64 getinterval putinterval
  151.     dup dup 128 exch 0 128 getinterval putinterval
  152.     dup dup 256 exch 0 256 getinterval putinterval pop
  153.  
  154.     % Get the length of the string
  155.     picstr length dup
  156.  
  157.     % Determine the partial piece
  158.     512 mod dup
  159.  
  160.     % Get the partial piece
  161.     ST exch 0 exch getinterval
  162.  
  163.     % Put the partial piece
  164.     picstr exch 0 exch putinterval
  165.  
  166.     % Determine the max number for the main loop
  167.     exch 512 sub
  168.  
  169.     % Setup the rest of the for parameters
  170.     512 exch
  171.  
  172.     % Set the rest of the line
  173.     { picstr exch ST putinterval } for
  174.  
  175. } bind def
  176.  
  177. /rep
  178. {
  179.     % Get rid of the 0 op code
  180.     pop
  181.  
  182.     % Get the repeat count
  183.     gsh
  184.  
  185.     % Save the new position for after this operation
  186.     2 copy add 3 1 roll
  187.  
  188.     % Get the repeat character
  189.     gsh
  190.  
  191.     dup ST exch 0 exch put
  192.     dup ST exch 1 exch put
  193.     dup ST exch 2 exch put
  194.     dup ST exch 3 exch put pop ST
  195.     dup dup   4 exch 0   4 getinterval putinterval
  196.     dup dup   8 exch 0   8 getinterval putinterval
  197.     dup dup  16 exch 0  16 getinterval putinterval
  198.     dup dup  32 exch 0  32 getinterval putinterval
  199.     dup dup  64 exch 0  64 getinterval putinterval
  200.     dup dup 128 exch 0 128 getinterval putinterval
  201.  
  202.     % Get an interval the proper length
  203.     exch 0 exch getinterval
  204.  
  205.     % Save the output string on the stack for the final putinterval
  206.     picstr 3 1 roll
  207.  
  208.     putinterval
  209.  
  210. } bind def
  211.  
  212. /run
  213. {
  214.     % Update the position and leave it on the stack
  215.     2 copy add 3 1 roll
  216.  
  217.     % Create a string the length of the run
  218.     ST exch 0 exch getinterval
  219.  
  220.     % Read in the run string
  221.     currentfile exch readhexstring pop
  222.  
  223.     % Insert the string
  224.     picstr 3 1 roll putinterval
  225.  
  226. } bind def
  227.  
  228. /runlen
  229. {
  230.     % Initialize the position counter
  231.     0
  232.  
  233.     % Loop reading op codes until the EXIT OP code
  234.     {
  235.         gsh
  236.  
  237.         % Check for the EXIT OP 255
  238.         dup 255 eq {pop pop exit} if
  239.  
  240.         % If 0 it is a repeat else it is the length of the run
  241.         dup 0 eq {rep} {run} ifelse
  242.     } loop
  243.  
  244. } bind def
  245.  
  246. /getcstr
  247. {
  248.     % Get the op code indicating the type of line this is
  249.     gsh
  250.  
  251.     % Execute the proper read procedure based on the line type
  252.     [{currentfile picstr readhexstring pop pop} {runlen} {longrun} {}]
  253.     exch get exec
  254.  
  255.     % Leave the string on the stack
  256.     picstr
  257.  
  258. } bind def
  259.  
  260. /getcstr_r {picstr_r 0 getcstr putinterval picstr_r} bind def
  261. /getcstr_g {picstr_g 0 getcstr putinterval picstr_g} bind def
  262. /getcstr_b {picstr_b 0 getcstr putinterval picstr_b} bind def
  263.  
  264. % End AmigaDict
  265. end
  266.  
  267. %%EndProlog
  268.